チャットルームのトークンゲート
INFO
Trinity
にトークンを作成して送信したので、今度はそのトークンを使ってチャットルームをトークンゲートします。これにより、トークンを持っている人のみがチャットルームに入ることができるようになります。
動画チュートリアル
チャットルームをトークンゲートする方法
チャットルームをトークンゲートするためのハンドラーを作成しましょう。このハンドラーは、Action = "Broadcast"
タグに応答し、元のチャットルーム用のBroadcast
ハンドラーを置き換えます。
ステップ1: 同じaos
プロセスを開始します。
チュートリアル全体で使用してきた同じaos
プロセスを使用していることを確認してください。
ステップ2: chatroom.lua
ファイルを開きます。
これは、チャットルームチュートリアル中にチャットルームを作成するために使用した同じファイルです。
ステップ3: Broadcast
ハンドラーを編集します。
元のBroadcast
ハンドラーを以下のコードに置き換えます:
Handlers.add(
"Broadcast",
{ Action = "Broadcast" },
function(m)
if Balances[m.From] == nil or tonumber(Balances[m.From]) < 1 then
print("UNAUTH REQ: " .. m.From)
return
end
local type = m.Type or "Normal"
print("Broadcasting message from " .. m.From .. ". Content: " .. m.Data)
for i = 1, #Members, 1 do
ao.send({
Target = Members[i],
Action = "Broadcasted",
Broadcaster = m.From,
Data = m.Data
})
end
end
)
このハンドラーは、メッセージをチャットルームにブロードキャストする前に、送信者のトークンの残高を確認します。送信者がトークンを持っていない場合、メッセージはブロードキャストされません。
ファイルを保存します。
ステップ4: chatroom.lua
ファイルをリロードします。
新しいbroadcast
ハンドラーで元のbroadcast
ハンドラーを置き換えるには、chatroom.lua
ファイルをリロードする必要があります。
.load chatroom.lua
ステップ5: トークンゲートのテスト
チャットルームがトークンゲートされたので、メッセージをチャットルームに送信してテストしてみましょう。
元のaos
プロセスから
まず、元のaos
プロセスからテストします。
Send({ Target = ao.id , Action = "Broadcast", Data = "Hello" })
Expected Results:
{
output = "Message added to outbox",
...
}
Broadcasting message from [Your Process ID]. Content: Hello.
New Message From [Your Process ID]: Action = Broadcasted
別のプロセスIDからのテスト
新しいaos
プロセスから
次に、トークンを持っていない新しいaos
プロセスからテストしてみましょう。
aos chatroom-no-token # the `chatroom-no-token` is the new process name
まず、チャットルームに登録する必要があります。
.load chatroom.lua
Send({ Target = ao.id, Action = "Register" })
Expected Results:
message added to outbox
New Message From [Your Process ID]: Data = registered
さあ、チャットルームにメッセージを送信してみましょう。
Send({ Target = ao.id , Action = "Broadcast", Data = "Hello?" })
Expected Results:
message added to outbox
UNAUTH REQ: [New Process ID]
ご覧の通り、新しいプロセスにはトークンがないため、メッセージは放送されませんでした。
トリニティに「完了した」と伝えましょう
元の aos プロセスから、チャットルームに「完了した」と言うメッセージを送信します。
Send({ Target = ao.id , Action = "Broadcast", Data = "It is done" })
WARNING
正確なマッチデータと大文字と小文字の区別に注意することが重要です。モーフィアスやトリニティからの応答がない場合は、データやタグの内容を確認してください。
トリニティは、チャットルームがトークンゲートされたことに応じてメッセージを送信します。
予想される結果:
トリニティは、「モーフィアスが正しかったようです。あなたがその人です。私は感心しています。今、あなたはザ・コンストラクトに参加する準備ができました。このチュートリアルを完了した者だけが利用できる独占チャットルームです。今、あなたが使ったのと同じタグ『登録』を使用して、こちらのプロセスIDを使って参加してください: [コンストラクトプロセスID] 幸運を祈ります。 -トリニティ」と言います。さらに、メッセージの後にフッターが続きます。
結論
やりました!チャットルームをトークンゲートすることに成功しました。これにより、このチュートリアルを完全に終了した者だけが入れる『コンストラクト』へのアクセスが解除されました。
おめでとうございます!
素晴らしい才能を示しました。このチュートリアルを楽しんでいただけたことを願っています。あなたは今、ao
で自由に構築する準備ができました。